package com.gec.utils;

import com.gec.model.system.SysMenu;

import java.util.ArrayList;
import java.util.List;

public class MenuHelper {
    //这一步先找到父节点parentId为0
    public static List<SysMenu> buildTree(List<SysMenu> sysMenus) {
        //创建集合封装最后的数据
        List<SysMenu> tree=new ArrayList<>();
        //遍历所有的菜单集合
        for (SysMenu sysMenu : sysMenus) {
            //找到入口,parentId为0，则为入口
            if(sysMenu.getParentId().longValue()==0){
                tree.add(findChildren(sysMenu,sysMenus));
            }
        }
        return tree;
    }
    //从父节点找到它的子节点
    //判断id是否和parentId相等，如果相等则进行对数据封装
    //构建成树状结构
    private static SysMenu findChildren(SysMenu sysMenu, List<SysMenu> sysMenus) {
        sysMenu.setChildren(new ArrayList<SysMenu>());
        for (SysMenu menu : sysMenus) {
            if(sysMenu.getId().equals(menu.getParentId())){
                if(sysMenu.getChildren()==null){
                    //一直往下找，直到子节点找不到父节点
                    sysMenu.setChildren(new ArrayList<>());
                }
                //最后递归返回结果
                sysMenu.getChildren().add(findChildren(menu,sysMenus));
            }
        }
        return sysMenu;
    }

}
